The present invention relates generally to computer application software, and specifically to methods and system enabling application software to run on a computer without installation.
The registry is a system-defined database, which is included as a part of Microsoft Windows 3.1 and later Windows operating systems. It is used by applications and other system components to store and retrieve consistent configuration data. Information regarding the registry and its use is provided in publications available from the Microsoft Developers"" Network (MSDN) of Microsoft Corporation, Redmond, Wash., including xe2x80x9cPlatform SDK: Performance Monitoring/Registry,xe2x80x9d and Chapter 23 (Registry) of the xe2x80x9cDriver Development Kit.xe2x80x9d These publications are incorporated herein by reference. Data in the registry can be manipulated using application program interface (API) functions and services described in the above-mentioned publication, as well as with a Windows utility called the Registry Editor (Regedit.exe). Registry-related services are normally carried out by the Virtual Machine Manager (VMM) component of the Windows operating system kernel.
The registry stores data in a hierarchically-structured tree. Each node in the tree is called a key. Each key can contain both subkeys (which are themselves keys) and data entries called values. When an application is installed on a computer running Windows, it typically stores its own registry data in a branch under a key that is created for the particular application. In addition, the application may also use subkeys and values that are stored under other keys, which are shared with the operating system and/or with other applications. While the application is running, it uses the names of the appropriate keys to navigate in the registry for the purpose of reading and writing configuration data. Without the configuration data, the application is unable to run. For this reason, installation is an indispensable preparatory step to running most Windows applications that are known in the art.
During the installation procedure, the application creates any necessary new keys and writes the values that it will require in the registry. To add a new key or value to the registry, the application must first open an existing key, typically using the RegOpenKeyEx function (or a corresponding service _RegOpenKey), as described in the above-mentioned documentation. After creating a new subkey or setting a new value, the key is closed, and the new data are written to the registry. A group of keys, subkeys and values belonging to a specified branch of the registry may be saved to a backup file, known as a hive file, using the RegSaveKey function, as described in the above-mentioned MSDN documentation. Subsequently, the RegLoadKey function can be used to recall the information from the hive file and to restore it to the registry in a specified location. When the hive file contains data used by an application, it must be loaded back into the registry before the application can run.
It is an object of some aspects of the present invention to provide methods for enabling a software application to run on a computer without installation.
It is a further object of some aspects of the present invention to provide tools for emulating functions of the Windows registry.
In preferred embodiments of the present invention, a computer running a Windows operating system, and thus having a local registry, initiates running of a software application without installing on the computer. Instead, registry information needed for the application is provided in a previously-created emulation hive file. The data in the hive file are loaded into the local registry at a predetermined location before the application begins to run. When the application attempts to access the registry, by invoking an appropriate key as specified by the application designer, a registry emulation function intercepts the application""s request. The emulation function determines whether the key is located in the local registry or is taken from the data in the emulation hive file. Based on this determination, the emulation function services the request. The registry emulation is transparent to the application and to the operating system, so that the application runs as though it was actually installed on the computer.
In some preferred embodiments of the present invention, the application software and hive file are stored on a server, which is accessed by the computer via a network, such as the Internet. The registry emulation feature enables the computer to run the application without a user of the computer having to spend the time and effort required to download and install the entire application. Typically, only the hive file and required portions of the application are downloaded. Preferably, configuration changes made by the user while the application is running are saved in the emulation hive file when the computer exits from the application. The next time the user accesses this application, the hive file enables the saved configuration to be restored immediately. The local registry on the computer is substantially unaffected, however.
In some preferred embodiments of the present invention, the emulation hive file is created by actually installing the application on a trial computer, and intercepting requests by the application to write data to the registry during installation. A list is maintained of the keys created or used by the application during installation. The keys and their values are preferably arranged in a special branch of the registry of the trial computer that is created for this purpose, which mirrors the actual locations of the keys in the registry as used by the installation process, Upon the conclusion of installation, the special branch is saved, thus creating the emulation hive file.
Although preferred embodiments described herein are based on the registry of the Windows operating system, the principles of the present invention are similarly applicable to other operating systems that use a common database to maintain consistent configuration data for different applications.
There is therefore provided, in accordance with a preferred embodiment of the present invention, a method for running a software application on a computer having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, the method including:
providing a file containing further configuration data required by the application, which further data are not stored in the local database;
intercepting a request by the application to access the local database; and
returning an item of the further configuration data from the file to the application, responsive to the request.
Preferably, the database includes a hierarchical database having a tree structure that includes a plurality of branches, and providing the file includes providing data corresponding to one or more branches of the tree structure that are used by the application. Further preferably, the operating system includes a Windows operating system, and the database includes a Windows registry, and providing the data includes providing one or more registry keys, wherein intercepting the request includes hooking a registry service request. Most preferably, hooking the registry service request includes identifying one of the keys in the request, and processing the request responsive to the identified key. Further preferably, providing the file includes providing a hive file, and loading the data from the file into the registry before running the application.
Preferably, intercepting the request includes making a determination whether the request relates to one of the branches that contains only the further configuration data, or whether the request relates to another of the branches that is shared with the database, and processing the request responsive to the determination.
Additionally or alternatively, intercepting the request by the application includes receiving a request to alter the further configuration data, and the method includes altering the data in the file responsive to the request. Preferably, the method further includes saving the file including the altered data upon termination of the application, to be used in running the application subsequently.
Preferably, returning the item of the further configuration data includes emulating access by the operating system to the database, so that the request is handled in a manner transparent to the application.
In a preferred embodiment, the further configuration data include data that would normally be written to the database in the course of installation of the application on the computer, and running the software application includes running the application substantially without installation on the computer, by using the data in the file.
There is also provided, in accordance with a preferred embodiment of the present invention, a method for running a software application on a computer without installation of the application thereon, under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, which configuration data would normally include installation data generated during the installation of the application, the method including:
providing a file containing the installation data, which are not stored in the local database; and
accessing the data in the file instead of accessing the local database so as to retrieve the installation data while running the application.
Preferably, the method includes receiving the file and the application by download over a network to run on the computer. Further preferably, accessing the data includes providing the installation data from the file in a manner that emulates access by the operating system to the database, whereby the data are accessed in a manner transparent to the application.
In a preferred embodiment, providing the file includes collecting the installation data responsive to installing the application on a trial computer.
There is additionally provided, in accordance with a preferred embodiment of the present invention, a method for generating an emulation file for use in running a software application on a user computer under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the user computer, which configuration data would normally include installation data generated during installation of the application on the user computer, the method including:
installing the application on a trial computer;
intercepting a request generated while installing the application to write the installation data to the database on the trial computer; and
responsive to the intercepted request, writing the installation data to the emulation file, to be accessed by the application running on the user computer in place of accessing the local database, whereby the application runs on the user computer without installation thereon.
Preferably, writing the installation data includes saving one or more registry keys in a hive file. Most preferably, saving the one or more registry keys in the hive file includes creating an emulation branch in the registry that mirrors locations at which the one or more keys are stored in the registry during the installation on the trial computer, and saving the emulation branch in the hive file.
There is further provided, in accordance with a preferred embodiment of the present invention, computer apparatus having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the apparatus, which apparatus is adapted to receive a file containing further configuration data required by an application, which further data are not stored in the local database, and to run an application under the operating system by intercepting requests made by the application to access the database and to return, responsive to the requests, items of the further configuration data from the file to the application.
There is moreover provided, in accordance with a preferred embodiment of the present invention, computer apparatus for running a software application under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, which configuration data would normally include installation data generated during installation of the application on the apparatus, which apparatus is adapted to receive a file containing the installation data, which are not stored in the local database, and to run the application without the installation of the application on the apparatus by retrieving the installation data from the file instead of accessing the local database.
There is furthermore provided, in accordance with a preferred embodiment of the present invention, apparatus for generating an emulation file for use in running a software application on a user computer under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the user computer, which configuration data would normally include installation data generated during installation of the application on the computer, the apparatus including a trial computer on which the application is installed, which trial computer is adapted to intercept requests, generated while installing the application, to write the installation data to the local database on the trial computer, and which trial computer is further adapted, responsive to the intercepted requests, to write the installation data to the emulation file, to be accessed by the application running on the user computer in place of accessing the local database, whereby the application runs on the user computer without installation thereon.
There is also provided, in accordance with a preferred embodiment of the present invention, a computer software product for enabling a software application to run on a computer having an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, the product including a computer-readable medium in which program instructions are stored, which instructions, when read by the computer, cause the computer to receive a file containing further configuration data required by the application, which further data are not stored in the local database, and to intercept a request by the application to access the local database, so as to return an item of the further configuration data to the application, responsive to the request.
There is additionally provided, in accordance with a preferred embodiment of the present invention, a computer software product for enabling a software application to run on a computer without installation of the application on the computer, under an operating system that provides a local database containing consistent configuration data to be accessed by programs running on the computer, which configuration data would normally include installation data generated during the installation of the application on the computer, the product including a computer-readable medium in which program instructions are stored, which instructions, when read by the computer, cause the computer to read a file containing the installation data, which installation data are not stored in the database, and to access the data in the file instead of accessing the local database so as to retrieve the installation data while running the application.
There is further provided, in accordance with a preferred embodiment of the present invention, a computer software product for generating an emulation file for use in running a software application on a user computer under an operating system that provides a local database containing consistent configuration data to be accessed by programs running under the operating system, which configuration data would normally include installation data generated during installation of the application, the product including a computer-readable medium in which program instructions are stored, which instructions, when read by a trial computer, cause the trial computer to intercept a request generated to write the installation data to the database while the application is being installed on the trial computer, and responsive to the intercepted request, to write the installation data to the emulation file, to be accessed by the application running on the user computer instead of accessing the local database, whereby the application runs on the user computer without installation thereon.
The present invention will be more fully understood from the following detailed description of the preferred embodiments thereof, taken together with the drawings in which: